// 在定义这个函数时，我不决定这些参数的类型
// 而是让调用者以参数的形式告知，我这里的函数参数类型应该是什么类型
function sum<Type>(num: Type): Type {
    return num
}

// ts自带类型推导
sum(50)
sum('123')

// 明确传入的类型
sum<number>(20)
sum<any>([1,2,3])
sum<{name: string}>({name: 'csc'})